ECS のコンテナログをコンテナインスタンスから直接取得する方法を教えてください
困っていた内容
awslogs ログドライバーを使用してコンテナのログを CloudWatch Logs に転送していますが、一時的な問題で転送に失敗しました。 可能であれば、ECS コンテナインスタンスからログを直接参照できないかと考えており、方法があれば教えてください。
どう対応すればいいの?
docker logs
コマンドをお試しください。
docker logs
コマンドは、コンテナの実行時から現在に至るまでのログを表示するコマンドで、Docker Engine 20.10 以降であればログドライバーに関係なく、ログを表示できます。
docker logs — Docker-docs-ja 20.10 ドキュメント
docker logs コマンドは、コンテナの実行時から現在に至るまでのログを、逐次表示します。
Use docker logs with remote logging drivers | Docker Documentation
Starting with Docker Engine 20.10, you can use docker logs to read container logs regardless of the configured logging driver or plugin.
やってみた
取得対象のコンテナが含まれる ECS タスクを選択します。
コンテナランタイム ID をメモします。
コンテナインスタンスに接続します。
接続後、コンテナインスタンスでdocker logs 【コンテナランタイム ID】
を実行すると、ログが表示されます。
$ docker logs 999572e27ea460c7acc09b348746185a1ff6614e89e387bddda1c7d6a8bbc9cc /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ ...
必要に応じて、テキストに保存します。
docker logs 999572e27ea460c7acc09b348746185a1ff6614e89e387bddda1c7d6a8bbc9cc > container.log